package Week2;

import java.util.*;

public class Day9 {
}

//牛客:BC146 添加逗号
class Main5 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int len = s.length();
        for(int i = 1; i <= len; i++){
            System.out.print(s.charAt(i-1));
            if((len - i) % 3 == 0 && i != len){
                System.out.print(',');
            }
        }
    }
}

//牛客:DP2 跳台阶
class Main6 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] dp = new int[n + 1];
        if (n == 1) {
            System.out.println(n);
        } else {
            dp[1] = 1;
            dp[2] = 2;
            for (int i = 3; i <= n; i++) {
                dp[i] = dp[i - 1] + dp[i - 2];
            }
            System.out.println(dp[n]);
        }
    }
}

//牛客:JZ61:扑克牌顺子
//解法一：排序
class Solution3 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param numbers int整型一维数组
     * @return bool布尔型
     */
    public boolean IsContinuous (int[] numbers) {
        // write code here
        //排序
        Arrays.sort(numbers);
        int zero = 0;
        int gap = 0;
        for (int i = 0; i < numbers.length - 1; i++) {
            //记录0的个数
            if (numbers[i] == 0) {
                zero++;
            } else {
                //的得到非零数之间相隔的个数
                //如果有重复的数就返回false
                if(numbers[i] == numbers[i+1]) return false;
                else gap += numbers[i+1] - numbers[i] - 1;
            }
        }
        //如果0的数量大于相隔的个数就返回true
        if(gap > zero){
            return false;
        }else{
            return true;
        }
    }
}

//解法二:哈希表
class Solution4 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param numbers int整型一维数组
     * @return bool布尔型
     */
    public boolean IsContinuous (int[] numbers) {
        // write code here
        int max = 0;
        int min = 14;
        boolean[] ret = new boolean[14];
        //遍历数组将非0的数放入哈希表中
        for(int x : numbers){
            if(x != 0){
                //如哈希表中已经存在这个数了就返回false
                if(ret[x]) return false;
                //不存在就标记为存在
                ret[x] = true;
                //找到最大值和最小值
                max = Math.max(max,x);
                min = Math.min(min,x);
            }
        }
        //如果它们的差值是小于等于4的，那么它们就是可以组成顺子的
        return max - min <= 4;
    }
}